package com.sigmatrix.h5.service;

import java.util.List;

import com.sigmatrix.h5.entity.AdminArea;
import com.sigmatrix.h5.enums.CoordType;
import com.sigmatrix.h5.web.mode.SigmatrixLocationWrapper;
import com.sigmatrix.sc.jdbc.common.service.Service;

import feign.FeignException;

/**
 * 
 *@ClassName: AdminAreaService
 *@Description: 行政区划表
 *@author MH
 *@date 2017年9月25日 下午1:30:32
 */
public interface AdminAreaService extends Service<AdminArea,Integer>{
	
	/**
	 * 
	 *@Title: findByParentId
	 *@Description: 通过父节点查询子节点，如果父节点为空，则返回所有的一级节点
	 *@return List<AdminArea>
	 *@author MH
	 *@date 2017年9月25日 下午1:50:13
	 *@param parentId
	 *@return
	 *@throws FeignException
	 */
	List<AdminArea> findByParentId(Integer parentId);
	
	/**
	 * 
	 *@Title: findByIds
	 *@Description: 
	 *@return List<AdminArea>
	 *@author MH
	 *@date 2017年10月9日 下午5:58:59
	 *@param ids
	 *@return
	 */
	List<AdminArea> findByIds(Object ... ids);
	
	/**
	 * 
	 *@Title: findByAllByCache
	 *@Description: 在缓存里面查询
	 *@return List<AdminArea>
	 *@author MH
	 *@date 2017年10月10日 下午4:29:54
	 *@return
	 */
	List<AdminArea> findByAllByCache();
	
	/**
	 * 
	 *@Title: findProvinceAndCity
	 *@Description: 
	 *@return List<AdminArea>
	 *@author MH
	 *@date 2017年10月10日 下午4:30:59
	 *@return
	 */
	List<AdminArea> findProvinceAndCity();
	
	/**
	 * 
	 *@Title: reload
	 *@Description: 同步缓存里的数据
	 *@return void
	 *@author MH
	 *@date 2017年10月10日 下午4:45:33
	 */
	void reload();
	
	/**
	 * 获取地理位置信息
	 * 
	 * @param latitude 纬度
	 * @param longitude 经度
	 * @param coordType 地图坐标类型
	 * @return SigmatrixLocationWrapper
	 */
	SigmatrixLocationWrapper getLocation(String latitude, String longitude, CoordType coordType);
	
	/**
	 * 获取地理位置信息
	 * 
	 * @param latitude 纬度
	 * @param longitude 经度
	 * @return SigmatrixLocationWrapper
	 */
	SigmatrixLocationWrapper getLocation(String latitude, String longitude);
	

	/**
	 * 从cache 中查询。
	 * 
	 * @param id
	 * @return
	 */
	AdminArea findByIdFromCache(Integer id);
	
	
}
